home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Floppyshop 2
/
Floppyshop - 2.zip
/
Floppyshop - 2.iso
/
art&graf.ix
/
art-0039
/
source
/
dcquickf.asm
< prev
next >
Wrap
Assembly Source File
|
1997-04-16
|
2KB
|
77 lines
;
; Some (long) integer logic routines
;
MODULE DCQuickFunctions
;
SYMBOLS
;
label LUDivRem
Start: ; return garbage if divide by zero
.1: lea saveregs-.1(pc),a0
movem.l a1/a2/a3,-(a0)
move.l (a7)+,a3 ;return address
move.l (a7)+,a1 ;remainder address
move.l (a7)+,a2 ;integer address
move.w (a7)+,d1 ;divisor
move.l (a7)+,d0 ;dividend
tst.w d1
beq.s ludiv0 ;divide by zero
divu d1,d0 ;divide it
ludiv0:
move.w d0,(a2) ;integer
swap d0 ;get remainder
move.w d0,(a1) ;remainder
lubye:
move.l a3,-(a7) ;ret addr
movem.l (a0)+,a1/a2/a3
rts
label SetBit ; set bit n in array of bytes.
sb1:
.1: lea saveregs-.1(pc),a0
movem.l a1/a2/a3,-(a0)
move.l (a7)+,a3 ;return address
addq.l #4,a7 ;lose number of bytes
addq.l #4,a7 ;lose high bound
move.l (a7)+,a1 ;start addr of array
move.w (a7)+,d0 ;bit to set
ext.l d0
divu #8,d0
move.w d0,d1 ;displacement into array
swap d0 ;remainder to lower word
xor.b #7,d0 ;bit zero = bit 7.
bset.b d0,0(a1,d1.w) ;set bit
move.l a3,-(a7) ;ret addr
movem.l (a0)+,a1/a2/a3
rts
label TestBit ; Test bit n in array of bytes.
tb1:
.1: lea saveregs-.1(pc),a0
movem.l a1/a2/a3,-(a0)
move.l (a7)+,a3 ;return address
addq.l #4,a7 ;lose number of bytes
addq.l #4,a7 ;lose high bound
move.l (a7)+,a1 ;start addr of array
move.w (a7)+,d2 ;bit to test
moveq.l #0,d0 ;assume not set
ext.l d2
divu #8,d2
move.w d2,d1 ;displacement into array
swap d2 ;remainder to lower word
xor.b #7,d2 ;bit zero = bit 7.
btst.b d2,0(a1,d1.w) ;set bit
beq.s tbend
subq.l #1,d0 ;all bits on
tbend:
move.l a3,-(a7) ;ret addr
movem.l (a0)+,a1/a2/a3
rts
sregs: dq 1
dq 2
dq 3
saveregs:
dq 4
end